

#ifndef VISUALORIENTATION_CURRENCYCHASSIS_SAVEPOSEBYODOMSQL_H
#define VISUALORIENTATION_CURRENCYCHASSIS_SAVEPOSEBYODOMSQL_H
#include <QDialog>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QFormLayout>
#include <iostream>
#include <QString>
#include <QWidget>
#include <QDebug>
#include <math.h>
#include <QHBoxLayout>
#include <QTextEdit>
#include <QComboBox>
#include <QHBoxLayout>
#include <functional>
#include <unistd.h>
#include <driver/IIMTDriver.h>

/**
 * 1.小车位置的数据给server,server计算二维码在基坐标的位置并保存
 * 2.小车位置的数据给server,server计算小车在基坐标的位置并保存
 * qt操作界面
 * sukai
 * 2021-10-15
 */
using namespace std;
class SavePoseByOdom: public QDialog  {
private:

    //二维码id输入框
    QLineEdit *markerIdEdit;
    QFormLayout layout;

    //计算二维码pose
    QPushButton *markerBtn;
    //计算小车的pose
    QPushButton *carBtn;
    //计算小车的pose 并更新小车pose
    QPushButton initialPoseBtn;
    //桌子id号
    QLineEdit *foodTableIdEdit;
    //房间名字
    QLineEdit *areaIdEdit;
    //标点类型
    QLineEdit *typeIdEdit;
    //标点编码
    QLineEdit *markNumEdit;
    //点位到达后需要向外发送的tcp指令
    QLineEdit *commandEdit;
    //是否启用 位到达后向外发送的tcp指令 -1：禁止 ； 1：启用
    QComboBox *commandStatus;
    //路点所在的当前楼层
    QComboBox *robotfloor;
   // QLineEdit *robotfloor;
    //保存小车在桌子目标点的位置
    QPushButton savefoodTablePoseBtn;
    //更新小车在桌子目标点的位置
    QPushButton updatefoodTablePoseBtn;
    //清除日志
    QPushButton clear_logBtn;
    //返回ui
    QPushButton back_Btn;
    //记录日志
    QTextEdit logTextEdit;
    //绿色字体
    QString recv_prefix_green;
    //红色字体
    QString recv_prefix_red;
    //计算二维码pose回调函数
    function<void()> computerMarkerPoseCallBack;
    //计算小车的pose回调函数
    function<void()> computerCarPoseCallBack;
    //计算小车的pose回调函数
    function<void()> computerInitialPoseCallBack;
    //保存小车在桌子旁的pose回调函数
    function<void()> foodCarPoseCallBack;
    //更新小车在桌子旁的pose回调函数
    function<void()> foodCarPoseCallBackUpdate;
    double markerId;
    int foodTableId;

//public:
//    SavePoseByOdom();
public:
    explicit SavePoseByOdom(QWidget *parent = 0 );
    ~SavePoseByOdom();
    //初始化ui界面
    void initUI();

    //按钮点击事件
    void bindSignal();

    // 计算二维码pose
    void computerMarkerPose();
    // 计算小车的pose
    void computerCarPose();
    //计算小车的pose 并更新小车pose
    void computerInitialPose();
    //保存小车在桌子旁的pose回调函数
    void saveFoodCarPose();
    //更新小车在桌子旁的pose回调函数
    void updateFoodCarPose();
    //清除日志
    void clear_log();
    //返回页面
    void back();
    //显示日志
    void show_console(QString msg_log,QString send);
    //计算二维码pose回调函数
    void setComputerMarkerPoseCallBack(function<void()> computerMarkerPoseCallBack);
    //计算小车的pose回调函数
    void setComputerCarPoseCallBack(function<void()> computerCarPoseCallBack);
    //计算小车的pose 并更新小车pose回调函数
    void setComputerInitialPoseCallBack(function<void()> computerInitialPoseCallBack);
    //保存小车在桌子旁的pose回调函数
    void setFoodCarPoseCallBack(function<void()> foodCarPoseCallBack);
    //更新小车在桌子旁的pose回调函数
    void setFoodCarPoseCallBackUpdate(function<void()> foodCarPoseCallBackUpdate);
    double getMarkerId();
    int getFoodTableId();
    void setFoodTableIdAndArea();
    //标点类型
    QString getTypeId();
    //标点编码
    QString getMarkNum();
    //点位到达后需要向外发送的tcp指令
    QString getCommand();
    //是否启用 位到达后向外发送的tcp指令 -1：禁止 ； 1：启用
    QString getCommandStatus();
    QString getArea();
    //路点所在的当前楼层
    QString getRobotfloor();
    //sukai 发送数据
    void sendMsg(QString msg);
};


#endif //VISUALORIENTATION_CURRENCYCHASSIS_SAVEPOSEBYODOMSQL_H
